import config from '@/config.js'

import
store
from '@/store/index.js'


function uploadImage(newCount, successCallback, errorCallback) {
	const {
		token
	} = store.getters

	// 选择照片
	uni.chooseImage({
		count: newCount, // 默认9
		sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图，默认二者都有
		sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机，默认二者都有
		success: function(res) {
			// 获取上传的图片
			const tempFilePaths = res.tempFilePaths;
			tempFilePaths.forEach((res, index) => {
				uni.showLoading({
					icon: 'loading',
					title: '正在努力加载中'
				})
				// 上传图片
				uni.uploadFile({
					url: config.HTTPS_IMAGE_URL + 'admin/index', // 开发者服务器地址
					filePath: res,
					name: 'file', // 必填，文件对应的 key
					header: {
						'Token': token || '' // 这里的 yourToken 替换为你的实际token
					},
					success: function(uploadFileRes) {
						const data = JSON.parse(uploadFileRes.data);
						if (data.code === 200) {
							if (typeof successCallback === 'function') {
								uni.hideLoading()
								successCallback(data);
							}
						}
					},
					fail: function(uploadFileErr) {
						// 失败回调
						if (typeof errorCallback === 'function') {
							uni.hideLoading()
							const errorData = JSON.parse(uploadFileErr);
							errorCallback(errorData);
						}
					}
				});

			})

		},
		fail: function(chooseImageErr) {
			// 选择照片失败的回调
			if (typeof errorCallback === 'function') {
				uni.hideLoading()
				errorCallback(chooseImageErr);
			}
		}
	});
}

function uploadVideo(successCallback, errorCallback) {
	uni.chooseVideo({
		sourceType: ['album', 'camera'], // 从相册或相机选择视频
		camera: 'back', // 默认使用后置摄像头，可以指定front为前置
		maxDuration: 8, // 视频最大持续时间，默认60秒
		success: (res) => {
			const tempFilePaths = res.tempFilePath;
			uni.showLoading({
				icon: 'loading',
				title: '正在努力加载中'
			})
			uni.uploadFile({
				url: config.HTTPS_IMAGE_URL, // 开发者服务器地址
				filePath: tempFilePaths,
				name: 'file', // 必填，文件对应的 key
				header: {
					'Token': token || '' // 这里的 yourToken 替换为你的实际token
				},
				success: function(uploadFileRes) {
					const data = JSON.parse(uploadFileRes.data);
					// 成功回调
					if (typeof successCallback === 'function') {
						uni.hideLoading()
						successCallback(data);
					}
				},
				fail: function(uploadFileErr) {
					// 失败回调
					if (typeof errorCallback === 'function') {
						uni.hideLoading()
						const errorData = JSON.parse(uploadFileErr);
						errorCallback(errorData);
					}
				}
			})
		},
		fail: function(chooseImageErr) {
			console.log(chooseImageErr, '---');
			// 选择照片失败的回调
			if (typeof errorCallback === 'function') {
				uni.hideLoading()
				errorCallback(chooseImageErr);
			}
		}
	})
}

function upload_public(optionItem, successCallback, errorCallback) {
	if (optionItem.isImage) {
		uni.chooseImage({
			count: optionItem.count, // 默认9
			sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图，默认二者都有
			sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机，默认二者都有
			success: function(res) {
				const tempFilePaths = res.tempFilePaths;
				tempFilePaths.forEach((res, index) => {
					if (typeof successCallback === 'function') {
						uploadFile(res, item => {
							successCallback(item)
						})
					}
				})
			},
			fail: function(chooseImageErr) {
				// 选择照片失败的回调
				if (typeof errorCallback === 'function') {
					errorCallback(chooseImageErr)
				}
			}
		})
	} else {
		uni.chooseVideo({
			sourceType: ['album', 'camera'], // 从相册或相机选择视频
			camera: 'back', // 默认使用后置摄像头，可以指定front为前置
			maxDuration: 8, // 视频最大持续时间，默认60秒
			success: (res) => {
				const tempFilePaths = res.tempFilePath;
				uploadFile(tempFilePaths)
			}
		})
	}
}

function uploadFile(res, successCallback, errorCallback) {
	uni.showLoading({
		icon: 'loading',
		title: '正在努力加载中'
	})
	uni.uploadFile({
		url: config.HTTPS_IMAGE_URL + 'admin/index/', // 开发者服务器地址
		filePath: res,
		name: 'file', // 必填，文件对应的 key
		header: {
			'Token': token || '' // 这里的 yourToken 替换为你的实际token
		},
		success: function(uploadFileRes) {
			// 成功回调
			const data = JSON.parse(uploadFileRes.data);
			if (data.code === 200) {
				uni.hideLoading()
				uni.showToast({
					title: '上传成功',
					duration: 2000
				})
				if (typeof successCallback === 'function') {
					successCallback(data)
				}
			} else if (data.code === '401') {
				uni.hideLoading()
				store.dispatch('clearUserInfo');
				uni.navigateTo({
					url: '/pages/login/index'
				})
			} else {
				uni.hideLoading()
			}
		},
		fail: function(uploadFileErr) {
			const errorData = JSON.parse(uploadFileErr);
			uni.hideLoading()
			uni.showToast({
				title: '上传失败',
				icon: 'none'
			})
			if (typeof errorCallback === 'function') {
				errorCallback(errorData)
			}
		}
	})
}
export {
	uploadImage,
	uploadVideo,
	upload_public
}